/**
 * 参数处理
 * @param params 参数
 */
export function tansParams(params) {
	let result = ''
	for (const propName of Object.keys(params)) {
		const value = params[propName]
		var part = encodeURIComponent(propName) + "="
		if (value !== null && value !== "" && typeof(value) !== "undefined") {
			if (typeof value === 'object') {
				for (const key of Object.keys(value)) {
					if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') {
						let params = propName + '[' + key + ']'
						var subPart = encodeURIComponent(params) + "="
						result += subPart + encodeURIComponent(value[key]) + "&"
					}
				}
			} else {
				result += part + encodeURIComponent(value) + "&"
			}
		}
	}
	return result
}

/**
 * json多层转单层
 * @param json 参数
 */
export function flattenJson(json) {
	var result = {};

	function recurse(cur, prop) {
		if (Object(cur) !== cur) {
			result[prop] = cur;
		} else if (Array.isArray(cur)) {
			for (var i = 0, l = cur.length; i < l; i++)
				recurse(cur[i], prop ? prop + "." + i : "" + i);
		} else {
			for (var i in cur) {
				recurse(cur[i], prop ? prop + "." + i : i);
			}
		}
	}
	recurse(json, "");
	return result;
}

// 返回项目路径
export function getNormalPath(p) {
	if (p.length === 0 || !p || p == 'undefined') {
		return p
	}
	let res = p.replace('//', '/')
	if (res[res.length - 1] === '/') {
		return res.slice(0, res.length - 1)
	}
	return res
}
/**
 * 查找对象的唯一键值对（比如id）去判断是否存在某个数据中
 * @param {*} arr 数组
 * @param {*} key 对象键值名
 * @param {*} val
 * @returns {object}
 */
export function findItem(arr, key, val) {
	for (let i = 0; i < arr.length; i++) {
		if (arr[i][key] == val) {
			return i
		}
	}
	return -1
}

export function color16() {
	//十六进制颜色随机
	const r = Math.floor(Math.random() * 256)
	const g = Math.floor(Math.random() * 256)
	const b = Math.floor(Math.random() * 256)
	const color = `#${r.toString(16)}${g.toString(16)}${b.toString(16)}`
	return color
}
/**
 * App的扫码引擎，使用业内开源的通用扫码库，识别效率比不过微信、支付宝、华为、谷歌等商业扫码库
 * @return { Promise }
 */
export function uniScanCode() {
	// #ifdef APP-PLUS
	return new Promise((resolve, reject) => {
		// 允许从相机和相册扫码
		uni.scanCode({
			success: function(res) {
				resolve(res)
			},
			fail() {
				reject({
					result: "识别失败或用户取消"
				})
			}
		});
	})
	// #endif
	// #ifdef H5
	return new Promise((resolve, reject) => {
		reject({
			result: "暂未开发"
		})
	})
	// #endif
}